In a computer network there are occasions when two or more computers in the network inadvertently attempt to complete the same task, such as operating a software application or processing data, at the same time. However, in situations where the task can be correctly performed by only one computer at a time, deleterious results may ensue from having two or more computers in the network processing or attempting to process the same task. In order to avoid this problem, computer systems commonly employ mutual exclusion locks.
One application of mutual exclusion lock implementation is high availability environments for computer networks. In a high availability environment, it is often critical that a software application operating on the computer network be operational at all times. In such cases, if one computer in the network is running the application and subsequently fails, then another computer in the network takes over and runs the application. However, a significant problem arises when another computer in the network attempt to take over and run the application concurrently with the first computer. This scenario has serious potential for corrupting databases.
One solution to this problem is to use a disk drive accessible to each computer in the network and an algorithm that runs through a series of reads and writes on the disk drive. The algorithm eventually yields which computer in the network will run the application. Another solution involves the use of an external computer. In the specific case of two computers A and B competing to run the application, a third computer arbitrates between the two competing computers. If both computer A and B are alive, they contact the third computer, which will then determine which computer will run the application. However, these current methods may be economically unacceptable and may require a network configuration that is undesirable or require additional hardware.
Accordingly, a need exists for an alternate system and method for mutual exclusion lock implementation that may be used in a variety of applications that is relatively inexpensive and simple.